
/*作用：告诉编译器在编译期不要去检查变量是否为空
只能修饰变量var，不能修饰常量val
不能修饰基本数据类型（因为基本数据类型在类加载的准备阶段会被初始化为默认值）
在调用lateinit修饰的变量时，如果还没有初始化，则会抛出未初始化异常
可以通过isInitialized检查是否初始化
*/
class Player4 {
    //lateinit延迟初始化
    lateinit var equipment:String
    fun ready(){
        equipment = "sharp knife"
    }

    fun battle(){
        //isInitialized检查是否初始化
        if (::equipment.isInitialized) println(equipment)
    }
}

fun main() {
    val p = Player4()
    //p.ready()
    p.battle()
}